"""
功能描述：维护微头条的页面类，属性和方法
导包
    创建页面类littlemsgpage
    定义类属性
        页面元素定位属性
    定义实例方法
        页面元素的操作方法

"""


# 导包
from appium代码第一周.common.log import log1
from telnetlib import EC
from appium代码第一周.po.video.basepage import basepage
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#     创建页面类littlemsgpage

class littlemagpage(basepage):
            #  定义类属性
    #     页面元素定位
        # 发布按钮
    pulissh_bth=(By.ID,"com.ss.android.article.news:id/bpx")
    # 微头条
    little_msg=(By.ID,"com.ss.android.article.news:id/bxm")
    #     输入框
    input_box=(By.ID,"com.ss.android.article.news:id/bmj")
    #     发布
    last_publish=(By.ID,"com.ss.android.article.news:id/a96")
        #         页面元素定位属性
    def __init__(self,driver):
        self.driver=driver

    def by_find_element(self,*item):
        """
        二次封装find_elemnt方法，时间元素定位加入显示等待，提高页面查找元素的稳定性
        :param item:
        :return:
        """
        try:
            element=WebDriverWait(self.driver,10).until(EC.presence_of_element_located(item))
        except Exception as msg:
            log1.info(f'页面元素{item}定位失败，提示{msg}')
        else:
            return element

        #     定义实例方法
    def clickpubbth(self):
        """
        点击+好发布按钮
        :return:
        """
        self.by_find_element(*self.pulissh_bth).click()

    def clickitmsg(self):
        """
        点击页面微头条按钮
        :return:
        """
        self.by_find_element(*self.little_msg).click()

    def inputlitbox(self,data):
        """
        在输入框输入内容
        :param data:
        :return:
        """
        self.by_find_element(*self.input_box).send_keys(data)

    def clicklastput(self):
        """
        点击发布按钮，发消息
        :return:
        """
        self.by_find_element(*self.last_publish).click()


    def publishlittlemsg(self,data):
        """
        聚合微头条发布按钮
        :param data:
        :return:
        """
        self.clickpubbth()
        self.clickitmsg()
        self.inputlitbox(data)
        self.clicklastput()

        #         页面元素的操作方法